This invention relates generally to the control and management of automated manufacturing systems, and more particularly to a system and method for failure recovery and state transitioning of a reconfigurable production system.
Model-based planning and scheduling (the system control software) in production systems is often used only for creating schedules for normal behavior, but is not involved in recovering from failures in the execution of these schedules and in transitioning from inconsistent to consistent states of the system. In the case of traditional systems, typically the entire system is stopped when one of its modules goes off-line or declares a fault. Furthermore, if it is possible to recover from the fault without operator intervention, simple recovery procedures are invoked (e.g., to purge all work units currently in the process path and not yet delivered), and the system is then restarted to produce the uncompleted part of the current job. The reason for choosing simple default recovery procedures is that the general problem of fault recovery, which may require rerouting work units, redoing operations, and redoing selected parts of a job, is often as complex as the original planning and scheduling problem, in particular for a reconfigurable system.
This approach is unsatisfactory for systems with parallel modules or a potentially large number of work units in process. With different parts of a job distributed among multiple modules, simple procedures such as purging all work units in process lead to considerable waste in the best case and significant lost production time in the worst case. Due to the complexity of recovering in many-module systems, simple local recovery may actually lead to inconsistencies in the system state or at least to unexpected module interactions.
Instead, with these systems, it would be desirable to continue using all available system capabilities by planning and scheduling from the current system state, if sufficiently known, circumventing offline modules and redoing work only as necessary. In some cases, it would be useful if the software worked with the operator to help make decisions and execute some of the necessary operations.